package cn.e4j.modular.crm.service.impl;

import cn.e4j.core.dto.Dtos;
import cn.e4j.core.dto.impl.Dto;
import cn.e4j.core.util.InvokeUtil;
import cn.e4j.modular.crm.entity.Gwai760;
import cn.e4j.modular.crm.mapper.Gwai800Mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author shixc
 * @since 2019-02-02
 */
@Service
public class Gwai800ServiceImpl extends ServiceImpl<Gwai800Mapper, Gwai760> {

    @Transactional(readOnly = true)
    public List<Dto> getGwddData(Page<Object> page, Dto dto) {
        List<Dto> result = new ArrayList<>();
        if (!dto.getString("COMPANY").equals("")) {
//            result = this.baseMapper.getGwddPage(page, dto);
            result = InvokeUtil.invokeBeanMethod("gwai800Mapper,getGwddPage",page,dto);
        }
        return result;
    }

    @Transactional(readOnly = true)
    public Dto getGwal(Dto dto) {
        List<Dto> list = this.baseMapper.getGwal(dto);
        Dto gwalDtos = list.size() > 0 ? list.get(0): null ;
        return gwalDtos;
    }

    @Transactional(readOnly = true)
    public List<Dto> getGwdeData(Dto dto) {
        List<Dto> result = this.baseMapper.getGwdeData(dto);
        return result;
    }

    @Transactional(readOnly = true)
    public Dto getMA041(Dto dto) {
        Dto maDtos = this.baseMapper.getMA041(dto);
        return maDtos;
    }

    @Transactional(readOnly = true)
    public Dto getFH(Dto dto) {
        Dto outDto = Dtos.newDto();
        Dto fhDtos = this.baseMapper.getFH(dto);
        Dto thDtos = this.baseMapper.getTH(dto);
        outDto.put("FH", fhDtos.getBigDecimal("FH"));
        outDto.put("TH", thDtos.getBigDecimal("TH"));
        return outDto;
    }

    @Transactional(readOnly = true)
    public Dto getWFLFH(Dto dto) {
        Dto outDto = Dtos.newDto();
        Dto inDto = this.baseMapper.getWFLFH(dto);
        outDto.put("WFLFH", inDto.getBigDecimal("WFLFH"));
        return outDto;
    }

    @Transactional(readOnly = true)
    public Dto getPH(Dto dto) {
        Dto outDto = Dtos.newDto();
        Dto dto1 = this.baseMapper.getPHFH(dto);
        Dto dto2 = this.baseMapper.getPHHK(dto);
        Dto dto3 = this.baseMapper.getPHWFL(dto);
        outDto.put("PHFH", dto1.getBigDecimal("PHFH"));
        outDto.put("PHHK", dto2.getBigDecimal("PHHK"));
        outDto.put("PHWFL", dto3.getBigDecimal("PHWFL"));
        return outDto;
    }

    @Transactional(readOnly = true)
    public List<Dto> getGwamData(Dto dto) {
        List<Dto> result = this.baseMapper.getGwam(dto);
        return result;
    }

    @Transactional(readOnly = true)
    public Dto getCPHJ(Dto inDto) {
        Dto outDto = Dtos.newDto();
        Dto dto = this.baseMapper.getCPHJ(inDto);
        outDto.put("CPHJ", dto.getBigDecimal("CPHJ"));
        return outDto;
    }

    @Transactional(readOnly = true)
    public Dto getCPMX(Dto inDto) {
        Dto outDto = Dtos.newDto();
        List<Dto> list = this.baseMapper.getCPMX(inDto);
        String result = "";
        for(int i = 0; i < list.size(); i ++){
           if(i == 0){
               result = list.get(i).getString("GWAM004") + " " + list.get(i).getString("CPMX");
           }else{
               result = result + ";" + list.get(i).getString("GWAM004") + " " + list.get(i).getString("CPMX");
           }
        }
        outDto.put("result",result);
        return outDto;
    }

    @Transactional(readOnly = true)
    public List<Dto> getGwao(Dto inDto) {
        Dto outDto = Dtos.newDto();
        List<Dto> list = this.baseMapper.getGwao(inDto);
        return list;
    }

    @Transactional(readOnly = true)
    public Dto getTZHJ(Dto inDto) {
        Dto outDto = Dtos.newDto();
        Dto dto = this.baseMapper.getTZHJ(inDto);
        List<Dto> list = this.baseMapper.getTZMX(inDto);
        String TZMX = "";
        for(int i = 0; i < list.size(); i ++){
           if(i == 0){
               TZMX = list.get(i).getString("GWDE004") + list.get(i).getBigDecimal("amount");
           }else{
               TZMX = TZMX + ";" + list.get(i).getString("GWDE004") + list.get(i).getBigDecimal("amount");
           }
        }
        outDto.put("TZHJ", dto.getBigDecimal("TZHJ"));
        outDto.put("TZMX", TZMX);
        return outDto;
    }

    @Transactional(readOnly = true)
    public List<Dto> getGWDD019(Dto inDto) {
        List<Dto> list = this.baseMapper.getGWDD019(inDto);
        return list;
    }

}
